package com.facebook.app.client;

import java.util.List;
import java.util.Set;

import com.facebook.app.shared.clustering.Clusterable;
import com.facebook.app.shared.facebookData.FacebookFriend;
import com.facebook.app.shared.facebookData.FacebookLike;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface FacebookServiceAsync {
	
	void deleteDataFromTheStore(AsyncCallback<Void> callback);
	
	void importFriends(String accessToken, AsyncCallback<FacebookFriend[]> callback);
	
	void importLikeData(FacebookFriend[] friends, String accessToken, AsyncCallback<Void> callback);
	
	void prepareClustering(FacebookFriend[] allFriends, AsyncCallback<List<Clusterable>> callback);

	void initiateClustering(ClusteringMethod clusteringMethod, List<Clusterable> clusterElements, AsyncCallback<List<Clusterable>> callback);
	
	void importLikesForFriends(List<FacebookFriend> friends, String accessToken, AsyncCallback<Set<FacebookLike>> callback);
	
}
